package com.gun.dynamicproxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * @author liyupeng
 * @date 2023/7/13&11:13
 * @packageName com.gun.dynamicproxy
 */
public class Handler implements InvocationHandler {

    // 目标对象
    // 声明 被代理的对象， 接口类型。
    private Person person;


    public Handler(Person person) {
        this.person = person;
    }
    /**
     * @param proxy
     * @param method
     * @param args
     * @return
     * @throws Throwable
     */
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("对原方法进行了前置增强1");  // 代理逻辑
        //原方法执行
        Object invoke = method.invoke(person, args);

        System.out.println("对原方法进行了后置增强1");  // 代理逻辑
        return invoke;
    }
}
